home *** CD-ROM | disk | FTP | other *** search
- /*
- File: STNIC.h
-
- Contains: Definitions and constants for accessing the National
- Semiconductor ST-NIC Ethernet Controller
-
- Written by: Richard W. Mincher.
-
- Copyright © 1992-1995 by Apple Computer, Inc., all rights reserved.
-
- Change History (most recent first):
-
- <0> 3/21/95 rwm Initial edit
- */
- #ifndef _APPLE_STNIC_
- #define _APPLE_STNIC_
-
-
- typedef struct STNICReg
- {
- // Register Name PS[0:0] PS[0:1] PS[1:0]
-
- unsigned char r0; // CR ------ CR ------- CR
- unsigned char r1; // CDLA0 PAR0 PSTART
- unsigned char r2; // CLD1 PAR1
- unsigned char r3; // BNRY PAR2
- unsigned char r4; // TSR PAR3
- unsigned char r5; // NCR PAR4
- unsigned char r6; // FIFO PAR6
- unsigned char r7; // ISR CURR
- unsigned char r8; // CRD0 MAR0
- unsigned char r9; // CRD1 MAR1
- unsigned char ra; // MAR2
- unsigned char rb; // MAR3
- unsigned char rc; // RSR MAR4
- unsigned char rd; // CNTR0 MAR5
- unsigned char re; // CNTR1 MAR6
- unsigned char rf; // CNTR2 MAR7
- } STNICReg;
-
- //________________________________________________________
- // Memory Map
- //________________________________________________________
- #define TXSTART 0x40
- #define PSTART 0x46
- #define PSTOP 0x80
-
- //________________________________________________________
- //
- // Register page zero addresses.
- //
- //________________________________________________________
-
- //
- // Read/Write registers
- //
- #define CommandReg r0 // Command register (RW)
- #define BoundaryPtr r3 // Boundary pointer (RW)
- #define IntStatus r7 // Interrupt status register (RW)
-
- //
- // Read-only registers
- //
- #define LocalDMA0 r1 // Current local DMA address 0 (R)
- #define LocalDMA1 r2 // Current local DMA address 1 (R)
-
- #define XmitStatus r4 // Transmit status register (R)
-
- #define NumCollisions r5 // Number of collisions (R)
-
- #define FIFO r6 // FIFO (R)
-
- #define RemoteDMA0 r8 // Current remote DMA address 0 (R)
- #define RemoteDMA1 r9 // Current remote DMA address 1 (R)
-
- #define RcvStatus rc // Receive status register (R)
-
- #define Tally0 rd // Tally counter 0 (R) [Frame Alignment Errors]
- #define Tally1 re // Tally counter 1 (R) [CRC Errors]
- #define Tally2 rf // Tally counter 2 (R) [Missed Packet Errors]
-
- //
- // Write-only registers
- //
- #define PageStart r1 // Page start register (W)
- #define PageStop r2 // Page stop register (W)
-
- #define XmitPgStart r4 // Transmit page start register (W)
- #define XmitCount0 r5 // Transmit byte count 0 -- low (W)
- #define XmitCount1 r6 // Transmit byte count 1 -- high (W)
-
- #define RemStart0 r8 // Remote start address 0 (W)
- #define RemStart1 r9 // Remote start address 1 (W)
- #define RemCount0 ra // Remote byte count 0 (W)
- #define RemCount1 rb // Remote byte count 1 (W)
-
- #define RcvConfig rc // Receive configuration register (W)
- #define XmitConfig rd // Transmit configuration register (W)
- #define DataConfig re // Data configuration register (W)
-
- #define IntMask rf // Interrupt mask register (W)
-
- //_______________________________________
- //
- // Register page one addresses
- //_______________________________________
-
- #define PhysAddr r1 // First of six physical address registers (RW)
- #define CurrPage r7 // Current page register (RW)
- #define MultiAddr r8 // First of eight multicast address registers (RW)
-
-
- //_______________________________________
- //
- // Receive packet header
- //_______________________________________
-
- #define RStatus 0 // Offset to status byte
- #define RNextPacket 1 // Offset to next packet pointer
- #define RByteCount 2 // Offset to packet byte count (word)
- #define RByteCountL 2 // Offset to packet byte count (low byte)
- #define RByteCountH 3 // Offset to packet byte count (high byte)
- #define RPacket 4 // Offset to start of packet
-
-
- //_______________________________________
- //
- // Register-specific definitions
- //_______________________________________
-
- //
- // Command register (OR values together)
- //
- #define STOP 0x01 // Stop bit in CR
- #define START 0x02 // Start bit in CR
- #define XmitPacket 0x04 // Transmit packet bit
- #define StopDMA 0x20 // No DMA indicator
-
- #define Select0 0x00 // Value to select page zero
- #define Select1 0x40 // Value to select page one
-
- //
- // Interrupt mask register, interrupt status register
- //
- #define IntPktRcvd 0x01 // Packet received interrupt enable
- #define IntPktXmt 0x02 // Packet transmitted
- #define IntRcvError 0x04 // Receive error
- #define IntXmitError 0x08 // Tranmit error
- #define IntOverWrt 0x10 // Overwrite
- #define IntCntOver 0x20 // Counter overflow
- #define IntDMA 0x40 // DMA complete
-
- //
- // Data configuration register
- //
- #define WordXfer 0x01 // Select word transfer
- #define RevOrder 0x02 // Reverse order of bytes
- #define LongAddr 0x04 // Select long address DMA mode
- #define NotLoopback 0x08 // Select loopback mode
- #define AutoInit 0x10 // Autoinitialize (what?)
-
- #define Thresh1 0x00 // Select 1 word FIFO threshold
- #define Thresh2 0x20 // Select 2 words FIFO threshold
- #define Thresh4 0x40 // Select 4 words FIFO threshold
- #define Thresh6 0x60 // Select 6 words FIFO threshold
-
- //
- // Transmit configuration register
- //
- #define NoCRC 0x01 // Inhibit CRC
- #define NoLoopback 0x00 // No loopback (normal operation)
- #define Loopback1 0x02 // Loopback mode 1 (for init)
- #define AutoXmtOff 0x08 // Auto transmit disable
- #define SpclBackoff 0x10 // Enable special backoff algorithm
-
- //
- // Transmit status register
- //
- #define XmitOK 0x01 // Transmit OK
- #define Collided 0x04 // Transmit with collision
- #define TooManyColls 0x08 // Too many collisions
- #define CSenseLost 0x10 // Carrier sense lost
- #define Underrun 0x20 // FIFO underrun
- #define CDHeartbeat 0x40 // ?
- #define OutOfWindow 0x80 // Out-of-window collision
-
- //
- // Receive configuration register
- //
- #define RcvErrors 0x01 // Receive packets with errors
- #define RcvRunts 0x02 // Receive runt packets
- #define RcvBroadcast 0x04 // Receive broadcasts
- #define RcvMulticast 0x08 // Receive multicast
- #define RcvAll 0x10 // Promiscuous mode
- #define MonitorMode 0x20 // Monitor mode (receive nothing)
-
- //
- // Receive status register
- //
- #define RcvOK 0x01 // Received ok
- #define CRCError 0x02 // CRC error (also misaligned)
- #define Misaligned 0x04 // Misaligned frame
- #define FIFOOverrun 0x08 // FIFO overrun
- #define MissedIt 0x10 // Missed packet (no room)
- #define Multicasted 0x20 // Multicast or broadcast packet
- #define RcvrDisabled 0x40 // Receiver is disabled
- #define Deferring 0x80 // Deferring
-
- #endif
-